#### Testing time since introduction hypothesis
# By Dr Kowiyou Yessoufou, University of Johannesburg, South Africa

rm(list=ls(all=TRUE))

### Is residence time important
library(piecewiseSEM)

# Load required libraries
library(lmerTest)
library(nlme)
#library(glmmADMB)
library(lme4)

dat.res.time2 <- read.table("C:\\Users\\kowiyouy\\Desktop\\UJ\\PhD students\\Estelle\\paper 4\\Nature plants\\data\\Data_residence_time2.txt",header=TRUE)
attach(dat.res.time2)
names(dat.res.time2)

meta.model1 =psem(
  glmer.nb(availability~residence_time+(1|genus),data=dat.res.time2),
  glmer.nb(number_recipes~availability+residence_time+medicinal_status+(1|genus),data=dat.res.time2),
  glmer(medicinal_status~residence_time+availability+total_uses+(1|genus),family = "binomial",data=dat.res.time2),
  glmer.nb(total_uses~residence_time+availability+(1|genus), data=dat.res.time2),
  glmer.nb(number_organs_used~number_recipes+medicinal_status+residence_time+total_uses+(1|genus),data=dat.res.time2)
)

summary(meta.model1)

#$Cstat
#Fisher.C df P.Value
#1    0.548  4   0.969

#$IC
#AIC   AICc     BIC  K   n
#1 54.548 75.471 125.156 27 101

#$coefficients
#          Response        Predictor  Estimate  Std.Error  DF Crit.Value P.Value Std.Estimate
#1        availability   residence_time   0.0009    0.0010 108     0.8538  0.3932           NA
#2      number_recipes     availability   0.0018    0.1002 101     0.0181  0.9856           NA
#3      number_recipes   residence_time  -0.0012    0.0024 101    -0.4986  0.6181           NA
#4      number_recipes medicinal_status  23.1849    2.0860 101    11.1144  0.0000           NA
#5    medicinal_status   residence_time   0.0068    0.0028 108     2.4456  0.0145           NA
#6    medicinal_status     availability   6.6288    0.0020 108  3383.6146  0.0000           NA
#7    medicinal_status       total_uses  20.0485    0.0014 108 14009.9666  0.0000           NA
#8          total_uses   residence_time   0.0016    0.0009 108     1.6691  0.0951           NA
#9          total_uses     availability   0.1155    0.0392 108     2.9500  0.0032           NA
#10 number_organs_used   number_recipes   0.0734    0.0404 101     1.8162  0.0693           NA
#11 number_organs_used medicinal_status  23.6634    2.9541 101     8.0103  0.0000           NA
#12 number_organs_used   residence_time   0.0009    0.0024 101     0.3566  0.7214           NA
#13 number_organs_used       total_uses   0.1134    0.1234 101     0.9187  0.3582           NA

# 
#$R2
#            Response            family  link   method Marginal Conditional
#1       availability Negative Binomial   log trigamma     0.00        0.00
#2     number_recipes Negative Binomial   log trigamma     0.98        0.98
#3   medicinal_status          binomial logit    delta     0.30        1.00
#4         total_uses Negative Binomial   log trigamma     0.08        0.10
#5 number_organs_used Negative Binomial   log trigamma     0.98        0.98


## Plot significant relationships

par(mfrow=c(2,2))

#A- predicting medicinal status
par(mfrow=c(1,3))
plot(residence_time,medicinal_status,xlab="residence time",ylab="medicinal status",main="A") # 
g=glm(medicinal_status~residence_time,family=binomial,data=dat.res.time2) # run a logistic regression model (in this case, generalized linear model with logit link). see ?glm
curve(predict(g,data.frame(residence_time=x),type="resp"),add=TRUE) # draws a curve based on prediction from logistic regression model

plot(total_uses,medicinal_status,xlab="total uses",ylab="",main="B") # 
g2=glm(medicinal_status~total_uses,family=binomial,data=dat.res.time2) # run a logistic regression model (in this case, generalized linear model with logit link). see ?glm
curve(predict(g2,data.frame(total_uses=x),type="resp"),add=TRUE) # draws a curve based on prediction from logistic regression model

plot(availability,medicinal_status,xlab="availability",ylab="",main="C") # 
g3=glm(medicinal_status~availability,family=binomial,data=dat.res.time2) # run a logistic regression model (in this case, generalized linear model with logit link). see ?glm
curve(predict(g3,data.frame(availability=x),type="resp"),add=TRUE) # draws a curve based on prediction from logistic regression model

# B- predicting other significant paths
par(mfrow=c(2,2))

plot(total_uses~residence_time,xlab="residence time",ylab="total uses",main="A",data=dat.res.time2)
abline(lm(total_uses~residence_time))

plot(total_uses~availability,xlab="availability", ylab="",main="B",data=dat.res.time2)
abline(lm(total_uses~availability))


plot(number_recipes~medicinal_status,xlab="medicinal_status",ylab="number of medicinal recipes",main="C",data=dat.res.time2)
abline(lm(number_recipes~medicinal_status))

plot(number_organs_used~medicinal_status,xlab="medicinal_status",ylab="number of organs used medicinally",main="D",data=dat.res.time2)
abline(lm(number_organs_used~medicinal_status))

# End